package com.mallbook.model.mapper;

import com.mallbook.model.pojo.Address;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author 宋明松
 * @Version V1.0.0
 * @Date 2022-06-23
 */
public interface AddressMapper {
    /**
     * 新增收货地址
     *
     * @param address 需要新增的收货地址信息
     */
    void add(Address address);

    /**
     * 删除一条收货地址（物理删除）
     * 管理员操作
     *
     * @param addressId 地址ID
     */
    void delete(@Param("addressId") Integer addressId, @Param("uId") Integer uId);

    /**
     * 批量删除收货地址（物理删除）
     * 管理员操作
     *
     * @param aIds 需要删除的收货地址信息表中的ID的集合
     */
    void deleteMore(List<Integer> aIds);

    /**
     * 用户修改某一条收货地址信息
     *
     * @param address 需要修改的收货地址信息
     */
    void update(Address address);

    /**
     * 根据 id 查询数据
     *
     * @param aId 地址ID
     * @param uId 用户ID
     * @return
     */
    Address findAddressById(@Param("aId") Integer aId, @Param("uId") Integer uId);

    /**
     * 查询默认地址
     *
     * @param uId 用户ID
     * @return
     */
    Address findDefaultAddress(Integer uId);

    /**
     * 根据 id 查询所有
     *
     * @param uId 用户ID
     * @return
     */
    List<Address> findAllAddress(@Param("uId") Integer uId);

    /**
     * 根据用户id查询，查询总数
     *
     * @param uId 用户ID
     * @return
     */
    int findAddressBySumNum(Integer uId);

    /**
     * 根据用户id查询，查询默认地址数
     *
     * @param uId 用户ID
     * @return
     */
    int findDefaultAddressNums(Integer uId);


}
